Skip to content

catalog: update Dune Ops Observability to v0.5.0 - #24

Closed
yacketrj wants to merge 10 commits into
Red-Blink:mainfrom
yacketrj:addon/dune-ops-observability-v0.5.0
Closed

catalog: update Dune Ops Observability to v0.5.0#24
yacketrj wants to merge 10 commits into
Red-Blink:mainfrom
yacketrj:addon/dune-ops-observability-v0.5.0

Conversation

@yacketrj

@yacketrj yacketrj commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Updates the Dune Ops Observability addon from v0.4.7 → v0.5.0.

Changes

  • Tab-aware lazy loading: active tab dispatches only its providers (2-5 bridge calls vs 9). 60s in-memory cache per source.
  • Placeholder tabs (AAA, NOC Infra, Audit Log): designed for future metrics architecture (see L1 design doc). Show planned-state cards.
  • Grafana HTTPS/HTTP mode toggle: detects protocol, defers iframe src to JS (avoids browser mixed-content prompts). HTTP Docker users get working iframes; HTTPS users see an explanation with workarounds.
  • Inventory 4th metric card: fills the summary-grid, adds empty-state message when bridge returns no detail.
  • Freshness badges: age indicator on every panel header (green <60s, amber <5m, red >5m).
  • NOC service table: now shows Prometheus target health (6 services) with CTA when metrics stack isn't running.
  • CSP frame-src fix: allows Grafana localhost iframes.

Testing

  • 57/57 tests pass
  • L2+L3 Eight-Hat Audit completed (C-1 HTML nesting fix applied, H-1/H-2 resolved)
  • Tested against live deployment (HTTP Docker + HTTPS Cloudflare Tunnel)
  • All pre-commit gates pass (gitleaks, semgrep, trivy, unit tests)

Release

Operator Impact

Additive only. No breaking changes. Operators on v0.4.7 can install v0.5.0 with zero config changes.

Draft Status

Per the upstream PR policy (Requirement 19), this PR remains in draft until:

  • Full test suite passes (57/57)
  • Tested against live deployment
  • Operator-facing changes documented
  • Eight Hats review completed (findings resolved)
  • Upstream maintainer review

yacketrj and others added 10 commits July 25, 2026 11:22
main's branch protection has required a "CI Gate" status check since
this repo was created, but no workflow file defining that check has
ever existed anywhere in this repo's history (confirmed via full tree
search across every branch and GitHub code search across all commits,
in both this fork and upstream Red-Blink/dune-docker-addons). Every PR
against main, including #2, has been stuck in a permanently BLOCKED
merge state as a result, despite being otherwise mergeable.

Adds two files, sourced from PR #1 (feat/soc2-compliance), which
already defined a working version of this exact workflow and had a
green CI run recorded against it before that branch went stale:

- .github/workflows/ci.yml: three jobs (Validate JSON, Security,
  CI Gate). CI Gate fans in the other two jobs' results and fails the
  overall check if either did not succeed, which is what main's branch
  protection actually polls for.
- .github/dependabot.yml: weekly github-actions dependency updates,
  unrelated to CI Gate itself but bundled with it in the source branch
  and has no downsides to including here.

Deliberately NOT included from PR #1's branch: compliance/README.md.
That file is Arrakis-Control-Panel's SOC 2 compliance boilerplate,
copied into this unrelated static-addon-catalog repo without adaptation
-- it opens by name-checking "the ACP ecosystem" in a repo that is not
ACP, and links to nine files (controls/soc2-matrix.md, five policy
docs, four runbook docs) that do not exist anywhere in this repository.
This repo has no runtime service, no user data, and nothing to run a
SOC 2 audit against, so a compliance program does not fit its actual
scope. Left out here rather than landing broken links and a
wrong-repo-name doc on main; PR #1 remains open for separate review of
that content.

Also fixes two dependency-freshness problems in the workflow, found
while validating it would actually keep working going forward rather
than just checking it ran once historically:

- gitleaks/gitleaks-action@v2 to @V3. v2 runs on the Node 20 Actions
  runtime, which GitHub already requires an explicit opt-out flag for
  as of 2026-06-02 and removes entirely on 2026-09-16 -- about seven
  weeks from this commit. v3 has no input/output/behavior changes per
  the action's own migration note, just the Node 24 runtime bump.
- returntocorp/semgrep-action@v1 replaced with running the semgrep CLI
  directly via its official Docker image. Both returntocorp/semgrep-
  action and its semgrep/semgrep-action successor are explicitly marked
  deprecated by their own READMEs ("stop using this wrapper script...
  migrate to native Semgrep support instead"); running the CLI directly
  is semgrep's own current recommended CI approach and avoids
  depending on an unmaintained wrapper at all.

Verified locally before committing:
- python3 -c "import yaml; yaml.safe_load(open('.github/workflows/ci.yml'))"
  and the same for dependabot.yml: both parse as valid YAML.
- python3 -c "import json; json.load(open('index.json'))" and the
  equivalent find/loop over addons/*.json: both pass against this
  repo's current content, confirming the Validate JSON job's own logic
  is correct against real data, not just syntactically present.
- gitleaks detect --source . -v: 81 commits scanned, no leaks found.
- semgrep --config p/security-audit --error . (installed locally,
  version 1.168.0): 0 findings, exit 0.
- docker run --rm -v "$PWD:/src" semgrep/semgrep semgrep --config
  p/security-audit --error /src: ran the exact command this workflow
  uses, confirmed 0 findings and exit code 0.
ci: add CI Gate workflow required by branch protection
…on PRs)

Fork-local addition only -- does not touch tracked upstream catalog
content (addons/, index.json). Complements the existing ci.yml's
Docker-invoked semgrep --config p/security-audit (Community-tier,
no login) with logged-in semgrep ci (Pro rules + Supply Chain).
ci: add Semgrep CI workflow (full ruleset + Supply Chain)
v0.5.0 — Phase 0: Tab-Aware Lazy Loading & Grafana Fix
- Tab-aware lazy loading (active tab dispatches only its providers)
- Placeholder tabs (AAA, NOC Infra, Audit Log) for L1-designed metrics
- Grafana HTTPS/HTTP mode toggle with mixed-content explanation
- Inventory layout fix (4th metric card, empty state)
- Freshness badges, NOC service table, CSP frame-src fix
- L2+L3 Eight-Hat Audit completed, 57/57 tests pass
@yacketrj

yacketrj commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

L3 Integration Audit — 2026-08-08

Per Requirement 20, a Layer 3 eight-hat audit was completed against the full v0.5.1 release diff.

18/18 checks pass. 0 CRITICAL, 0 HIGH.

Evidence

Audit Summary

Hat Passes Key Finding
Software Architect 3/3 Tab architecture sound, backward-compatible
Security 3/3 No new attack surface, CSP-gated
GRC 3/3 SHA256 verified, changelog current
Network 2/2 No new outbound connections
Cloud Security 1/1 No cloud dependencies
UI/UX 3/3 14 tabs degrade gracefully
DBA 1/1 No storage introduced (stateless)
QA/Test 2/2 57/57 pass, no regressions

@yacketrj

Copy link
Copy Markdown
Contributor Author

Closed per operator request — will be resubmitted after fixes.

@yacketrj yacketrj closed this Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant